posixfandomcom_ru-20200215-history
Настройка WMII3
WMII3 - не совсем обычный менеджер окон, особенным странным он может показаться пользователям оконных сред KDE и GNOME. Сначала работать в нем непривычно и немного неудобно, но через пару дней использования, горячие клавиши уже попадают в подкорку мозга и все обычные действия выполняются рефлекторно и потому очень быстро. Что же в нем такого необычного, спросит заинтересовынный читатель? Все дело в том, что в WMII окна не перекрываются. С большинством приложений работа в таком режиме (конечно после приобретения навыка)- одно удовольствие, но есть и исключения, но для них предусмотрен особый режим работы, который можно без проблем совмещать с обычным. Окна в особом режиме помечаются значком тильда (~), располагаются поверх обычных и называются плавающими (floating). Впрочем, что это я про исключения, надо бы сначала про правила. Первый вопрос который возникает у заинтересовавшегося читателя, это конечно "где достать?". Конечно, на официальном сайте - www.wmii.de. Здесь нужно сказать о двух версиях wmii. Можно провести аналогию со схемой проекта FreeBSD - существует стабильная (stable) ветка WMII, на текущий момент wmii3 и разрабатываемая (current), соответственно wmii4, обе можно получить из репозитария mercurial (легковесная замена cvs/svn). Проще всего скачать release - wmii 3.1, он распространяется в виде обычного пакета tar.gz. "Снимки" разрабатываемой версии также выкладываются, но использовать их я бы не рекомендовал. Установка wmii очень проста - распаковываем исходник, потом make ; make install. Даже configure не требуется (что говорит о легкости программы, и практическом отстутсвии зависимостей в коих ходит только X11), его заменяет config.mk который может быть с легкостью подвергнут ручной правке посредством текстового редактора. Поводов к тому два. Первый: для любителей тонкой оптимизации - можно добавить в строку CFLAGS свои любимые опции - вроде march или mcpu, впрочем особого смысла я в этом не вижу. Второй повод более весом, а именно если пользователь испытывает стойкую ненависть ко всяким панелям внизу экрана существует патч (polachok.narod.ru/wmii-3.1-unified_bar_on_top.patch) для расположения оной по верху экрана. После наложения коего (посредством patch -p1 < path-to-patch в директории wmii-3) в config.mk появляется опция BAR_ON_TOP установленная в 0. Ясно, что для размещения панели вверху значение нужно изменить на 1. Итак, WMII, для определенности будем считать wmii3, стоит сказать что в snapshot версии хоткеи и пути в псевдо-файловой системе могут сильно измениться, они нередко меняются даже от одного снапшота к другому, разница между которыми обычно не превышает нескольких дней, установлен. Я надеюсь читатель знает как можно установить его в качестве WM при запуске из startx или *dm. После первого запуска на экране появляется сообщение welcome и небольшая справка по использованию, правда на английском языке, а в каталоге $HOME пустой подкаталог ~/.wmii-3 в коий следует сваливать все вещи относящиеся к настройке этого WM. В первую очередь это файл wmiirc, для начала его можно скопировать из PREFIX/etc/wmii-3/wmiirc и уже эту копию подвергнуть правке. Впрочем, возможно вы останетесь довольны и умолчальными горячими клавишами. Вот они: *Запустить xterm - Modkey+Enter *Закрыть фрейм (и окно в нем) - Modkey + Shift + C *Следующее окно - Modkey + K *Предыдущее окно - Modkey + J *Следующий столбец - Modkey + L *Предыдущий столбец - Modkey + H *Сделать окно плавающим - Modkey + shift + space *Modkey + P - меню запуска приложений с автодополнением, при каждом запуске wmii перечитывает их из $PATH *Modkey + A - меню действий (действия - это просто скрипты, расположенные в каталоге конфигурации wmii, по умолчанию например там присутствует файл quit, также если запустить из этого меню wmiirc то произойдет перечитывание настроек) *Modkey + Shift + L - перенос окна в новую колонку слева от текущей *Modkey + Shift + H - перенос окна в новую колонку справа от текущей *Modkey + Shift + J - перенос окна вниз в текущей колонке *Modkey + Shift + K - перенос окна вверх в текущей колонке *Modkey по умолчанию - клавиша ALT. В WMII поддерживается 3 режима упорядочивания окон: Умолчальный. Он включается комбинацией $MODKEY-d. Все окна в колонке занимают одинаковое пространство. (ну или неодинаковое - суть в том что они все видны одновременно). Кстати, изменение размера окна производится кликом мышью на заголовке и "растягиванием" с зажатой клавишей Shift. Второй режим: режим максимизации, одно окно разворачиваются на полный экран, других не видно, переключаться между ними можно при помощи вышеупомянутых клавиш $MODKEY-j, $MODKEY-k. Включается данный режим при помощи $MODKEY-m. Третий похож на второй, только у скрытых окон видны заголовки. Включается $MODKEY-s. Если открытых окон становится слишком много их можно закрыть ($MODKEY-Shift-c) или перенести на другой "рабочий стол" - "тэг" в терминологии wmii при помощи $MODKEY-Shift-0...9. Впрочем, разработчики и идеологи WMII утверждают что выражение рабочий стол по отношению к тэгам некорректно, но я лично придерживаюсь противоположного мнения. Тюнинг Здесь речь пойдет о добавлении некоторых полезных и удобных вещей. Первое, это изменение раскраски окон. Меня, например, совершенно не устраивают цвета по умолчанию. Как я уже гвоорил, все настройки производятся в файле ~/.wmii-3/wmiirc. Этот файл, в теории может быть написан на любом интерпретируемом языке (в рассылке пробегали конфиги на ruby и perl) или даже может быть бинарником. По умолчанию же он написан на языке shell. За цвета отвечают переменные WMII_NORMCOLORS - для неактивных окон, и WMII_SELCOLORS для окон в фокусе. Наборы цветовых схем можно найти, например, здесь (http://wmii.de/wmii/index.php?page=color). Или подобрать самому по вкусу, благо синтаксис очень прост. Первое значение - цвет текста, второе - цвет фона, третье - цвет линии обрамления окон (border). Тут же стоит выставить и шрифт, посредством переменной WMII_FONT. Шрифты могут использоваться любые из тех что есть в списке xfontsel. Никакое сглаживание шрифтов, или там прозрачность заголовков не поддерживается по некоторым причинам, первая из которых - это не важно для эффективной работы, вторая - авторы всячески избегают значительного повышения числа строк кода и повышения его сложности ("complexity"). В разделе конфигурационного файла TAGGING RULES можно выставить на каком тэге размещать конкретное приложение, отметив приложение знаком ~ можно раз и навсегда сделать его окно плавающим. Кстати, тэги необязательно должны носить цифровое название - вполне могут быть и слова, например браузер можно разместить на тэге web и тд. Далее, в секции MISC, можно выставить обои рабочего стола (например с помощью утилиты feh или любой иной) или его фон (xsetroot), Тут можно прописать и другие команды выполняемые при старте WM, xmodmap, mpc play и тд. Здесь же запускается и скрипт status, который используется для отображения любых текстовых данных на wmiibar. Вот пример моего status'a: #!/bin/sh # periodically print date and load average to the bar # xwrite() { file="$1"; shift echo -n "$@" | wmiir write "$file" } # # Date and load wmiir remove /bar/status 2>/dev/null && sleep 2 wmiir create /bar/status xwrite /bar/status/colors $WMII_NORMCOLORS # # MPD wmiir remove /bar/mpd 2>/dev/null && sleep 2 wmiir create /bar/mpd xwrite /bar/mpd/colors $WMII_NORMCOLORS # # NET wmiir remove /bar/net 2>/dev/null && sleep 2 wmiir create /bar/net xwrite /bar/net/colors $WMII_NORMCOLORS IF="ppp0" while : do xwrite /bar/status/data Date: `date` Load: `uptime | sed 's/.*://; s/,//g'` # xwrite /bar/mpd/data MPD: | sed -n '2s/\[\(.*\)\.*/\1/;2s/playing/p/p;2s/paused/s/p;2s/stopped/t/p'`] `mpc | sed -n '1p'` `mpc | sed -n '2s/.*\]//p'` xwrite /bar/mpd/data MPD: `~/bin/minimpc|iconv -f UTF-8 -t KOI8-R` if (ifconfig $IF | grep UP > /dev/null) then xwrite /bar/net/data $IF: `ifconfig $IF | grep inet | cut -f 2 -d : | cut -f 1 -d " "` else xwrite /bar/net/data $IF: down fi sleep 1 done здесь создается три секции на панели, для которых используеются цвета неактивных окон из wmiirc, хотя можно выставить любые другие или сделать для каждой секции свои. Простор для фантазии неограниченный. Далее в каждую секцию раз в секунду записываются результаты выполнения команд. (Те у кого еще нет minimpc (сцылко) - раскомментируйте предыдущую строчку и закоментируйте эту). Далее по тексту wmiirc идет список горячих клавиш. На него стоит обратить внимание обладателям т.н. мультимедийных клавиатур - можно добавить туда строчки вида: XF86AudioLowerVolume XF86AudioRaiseVolume и т.д. а также тем кто уже дошел до желания изменить хоткеи. Далее по тексту EVENT LOOP. Именно здесь и происходит отработка всех событий связанных с перемещением по окнам и кликам по панели. Кстати о кликах по панели - это довольно неочевидно - вы можете добавить для каждой секции свои действия - вот так: mpd) { case "$2" in 1) mpc play `mpc playlist | colrm 60 500 | wmiimenu | colrm 1 1 | cut -d ')' -f 1,3` &;; 4) mpc next >> /dev/null &;; 5) mpc prev >> /dev/null &;; esac };; 1 - значит простой мышиный клик, 2 - клик средней кнопкой, 4 - прокручивание колеса вперед, 5 - назад. После описания всех случаев обязательно нужно добавить следующее: *) xwrite /ctl view "$1";; иначе клик по названию тэга обрабатываться не будет. Мультимедийные клавиши описываются также как и все остальные в секции Key XF86AudioLowerVolume) mpc volume -5 &;; Ну вот вот и все что я могу рассказать о настройке WMII3. Желаю всем удачной настройки и эффективной работы! See also: http://wmii.de/wmii/index.php?page=snippets